/*
 * Tp boole
 * 
 */
package boole.circuit;

import boole.port._PortEntree;
import boole.port._PortSortie;

/**
 *
 * @author Rémi PIOTAIX <remi.piotaix@gmail.com>
 */
public interface _PortOwner extends _Operable {

    /**
     * getNombresSorties renvoie le nombre de sortie(s) de l'opérable.
     *
     * @return: le nombre de sortie
     */
    public int getNombreSorties();

    /**
     * getNombresEntrees renvoie le nombre d'entré(s) de l'opérable.
     *
     * @return: le nombre d'entrées.
     */
    public int getNombreEntrees();

    /**
     * getSortie renvoie le port de sortie correspondant à l'opérable.
     *
     * @require identifiant <= getNombresSorties()
     *
     * @return: le port de sortie.
     */
    public _PortSortie getSortie(int identifiant);

    /**
     * getSortie renvoie le port d'entre correspondant à l'opérable.
     *
     * @require identifiant <= getNombresEntree()
     *
     * @return: le port de sortie.
     */
    public _PortEntree getEntree(int identifiant);

    /**
     * Connecte la sortie numero num du composant sur le port d'entrée numero
     * numPortCible du composant cible
     */
    public void connectSortieTo(int num, _PortOwner cible, int numPortCible);
}
